Ubuntu 16.04
Sponsored Link

LVS + Keepalived
2016/06/12
 
This is the Redundant configuration for LVS + Keepalived Server itself.
This example is based on the environment below.
        |
--------+--------------------------------------------------------------------
        |
        +-----------------+-------------------+--------------------+
        |10.0.0.40(VIP)   |10.0.0.40(VIP)     |                    |
    eth0|10.0.0.30    eth0|10.0.0.31      eth0|10.0.0.51       eth0|10.0.0.52
 +------+-----+    +------+-----+     +-------+------+     +-------+------+
 | LVS Server |    | LVS Server |     |   Backend#1  |     |   Backend#2  |
 |      #1    |    |      #2    |     |  Web Server  |     |  Web Server  |
 +------------+    +------------+     +--------------+     +--------------+

 
HTTP packets to 10.0.0.40(VIP) on LVS Server are forwarded to Backend01 and Backend02 Servers with DSR(Direct Server Return).
[1] Install ipvsadm and Keepalived on all LVS Servers.
root@dlp:~#
apt-get -y install ipvsadm keepalived
[2] Configure Keepalived.
It's OK to configure the same settings except one setting on both backend servers. (but only for the "priority" section, Change it on both backend server.)
root@dlp:~#
vi /etc/keepalived/keepalived.conf
# create new

global_defs {
    notification_email {
        root@dlp.srv.world
    }
    notification_email_from root@dlp.srv.world
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id LVS_Server
}
vrrp_instance VI_1 {
    state BACKUP
    # monitored interface
    interface eth0
    # virtual router's ID
    virtual_router_id 51
    # set priority (change this value on each server)
    # (large number means priority is high)
    priority 100
    nopreempt
    # VRRP sending interval
    advert_int 1
    # authentication info between Keepalived servers
    authentication {
        auth_type PASS
        auth_pass password
    }

    virtual_ipaddress {
        # virtual IP address
        10.0.0.40 dev eth0
    }
}
virtual_server 10.0.0.40 80 {
    # monitored interval
    delay_loop 3
    # distribution method
    lvs_sched rr
    # routing method
    lvs_method DR
    protocol TCP

    # backend server#1
    real_server 10.0.0.51 80 {
        weight 1
        HTTP_GET {
            url {
                # monitored path
                path /
                # status code for normally state
                status_code 200
            }
            # timeout(sec)
            connect_timeout 3
        }
    }
    # backend server#2
    real_server 10.0.0.52 80 {
        weight 1
        HTTP_GET {
            url {
                path /
                status_code 200
            }
            connect_timeout 3
        }
    }
}

root@dlp:~#
systemctl restart keepalived
[3] For DSR mode, return packets from backends to clients are directly returned, so it's nesessary to configure following settings. Set it on all backend servers.
# specify virtual IP address

root@node01:~#
iptables -t nat -A PREROUTING -d 10.0.0.40 -j REDIRECT
[4]
It's OK, Access to the Service IP address and make sure it works normally.
 
Tweet